This Week in Perl 6, July 13-19, 2005

Welcome to another Perl 6 summary, brought to you by the words “displacement” and “activity.” So far today, I’ve caught up with everything unread in NetNewsWire, my Flickr groups, every other mailing list I’m subscribed to, and completed about five Sudoku. Now I’m dragging out this introduction and I don’t know why; I enjoy writing these things.

This Week in perl6-compiler

This was another quiet week on the list. However, you only have to watch the SVN commit log and the other stuff on PlanetSix to know that things are still proceeding apace. Last time I looked, it seemed that Stevan Little was working on bootstrapping the Perl 5 implementation of the Perl 6 MetaModel to implement it in terms of itself.

Rather mind-bogglingly, Pugs is now targeting JavaScript as well.

The current Pugs release is 6.2.8.

Creating Threads in BEGIN

Nicholas Clark posted what he described as a “note to collective self” wondering about how Perl 6 will cope with people creating threads inside of BEGIN blocks. According to Luke, “it won’t.” Larry thought that it might be okay to create threads at CHECK time, so long as any spawned threads didn’t do any real work later than CHECK time.

Perl 6 Modules

Gav… (I presume the ellipsis is important to someone) wondered what he needed to do to write Perl 6 modules. Nathan Gray pointed him at the porting how-to in the Pugs distribution.

Is Namespace Qualification Really Required?

Phil Crow came across some weirdness with namespace resolution. It seems that you have to qualify function names explicitly in signatures. Autrijus agreed that it was a bug and asked for Phil to write a TODO test. Discussion ensued–I think the fix is in SVN now.

Parsing Perl 6 Grammars

Nathan Gray wondered about the state of Jeff “Japhy” Pinyan’s effort to implement a Perl 6 rules parser. Japhy said that it’s been on hold for a while, but that he’d started to work on it again, basing it on his earlier Regexp::Parser module.

Meanwhile, in perl6-internals

PMC Changes?

Nicholas Clark wondered if the PMC layout is likely to remain stable, or if there might be changes in relation to the generational garbage collector. In particular, he wanted to know if the API would remain stable. Leo thought that there might be changes in the layout, but the API shouldn’t change.

ParTcl Accelerator

Will Coleda showed some timings for ParTcl, the Parrot implementation of Tcl, and made a few suggestions about how to get things going faster. Patrick and Leo mused on the issues involved.

Partitioning PMCs

Nicholas Clark had some questions about making PMCs and Ponie play well together, with particular reference to using SvFLAGS().

Embedding/Extending Interface

Nicholas Clark wondered if Chromatic was still waiting for confirmation that his automated embedding tools were the Right Thing. Apparently, Chromatic is waiting for confirmation, but offered to send his existing patch, if only to force the discussion.

Ponie Questions

Nicholas Clark had a bunch of questions about various subsystems, mostly in relation to Ponie. Leo came good with answers.

Parrot Project Management

I’m not sure if Will Coleda’s suffering culture shock about the way Parrot project management happens, or if we’re really not doing it right. The first rule of Parrot/Perl 6 development is that if you really want something, then the only way to guarantee that it gets done is to do it yourself. It’s certainly worked for me over the years.

Tcl GC Issues–Solved

Matt Diephouse announced that as of r8617 in SVN, the longstanding GC bug that ParTcl occasionally tickled has been fixed. There was no rejoicing on the list, but at least one summarizer was really pleased to hear it.

GMC for Dummies

Summer of Code intern Alexandre Buisse, who is working on a new GC system for Parrot, pointed us all at an introduction to the Generational Mark and Compact scheme that he’s working to implement. He and Leo had a discussion about implications, assumptions, and other stuff.

Bob Rogers asked some tricky questions relating to circular structures and timely destruction. Discussion of this continues.

Register Allocation Fun

There was a flurry of patches from Curtis Rawls, who appears to be working on refactoring and (one hopes) fixing the IMCC register allocator. Way to go, Curtis.

Meanwhile in perl6-language

MML Dispatch

The ongoing discussion of the right way to dispatch multimethods is still, um, going on. Damian and Luke appear to have a fundamental disagreement about what the Right Thing is. “Manhattan!” “Pure!” “Manhattan!”–it’s not quite that bad, but they seem to have entrenched positions. Elsewhere in the thread, Larry mused on which was more general, classes or roles. Thomas Sandlaß wondered how they stood in relation to types.

Your summarizer wondered how he was ever going to explain all this and punted.

Method Calls on $self

My eyes, they burn! At this rate, I’m simply going to use $?SELF in all my Perl 6 classes. Larry’s latest suggestion seems to please even fewer people than ./method, which is really saying something. As someone who’s not a fan of ./, I found myself slightly surprised to agree with Autrijus, who reckons you get used to it really quickly.

The Perl 6 Library System

In response to a question from Autrijus about coderefs in @INC, or whatever Perl 6 is going to call it, Larry mused on the possible eventual design of Perl 6’s library system. It seemed to me that he was dropping a rather heavy hint to any interested readers who might like to come up with a first cut of Perl 6’s library system.

Later, he did some thinking aloud about treating strings as arrays, or vice versa.

Method Resolution Order

Stevan “MetaModel” Little cheered Larry’s statement that methods, subs, submethods, and “anything in between” all live in the same namespace. If you want to give two code-like things the same name, then you must explicitly declare them as multi.

Stevan went on to ask a bunch of questions about the semantics of method resolution, so as to get the Perl 6 MetaModel working right. Discussion ensued.

Type::Class::Haskell Does Role

I haven’t the faintest idea what Yuval Kogman is talking about. Dammit, I need to learn Haskell now. Luckily, Autrijus, Luke, David Formosa, and Damian did seem to understand it. There was ASCII art and everything. Sadly, there’s no Unicode art, but it’s only a matter of time.

Optimization Pipeline

Yuval Kogman posted an outline of the optimization pipeline idea that he’d brought up in a Hackathon. If confess that it looks rather like something discussed a few months (years?) ago that Chip shot down rather convincingly. (I remember this because I took pretty much the same position as Yuval, and I really didn’t want to be convinced.)

STM Semantics, the Transactional Role

Yuval Kogman discussed some issues with Software Transactional Memory (STM). A short discussion ensued.

More Method Resolution Order Questions

Returning from reading up on method resolution orders and class precedence lists, Stevan Little had a pile of questions and suggestions about Perl 6’s method resolution semantics. He pushed for using “C3” as Perl’s algorithm of choice and is implementing it in Perl6::MetaModel until and unless @Larry decides differently. He’s off to a flying start in that the One True Larry thinks it’s a good idea.

Accessor-Only Virtual Attributes

Sam Vilain wondered what would happen if he made an “accessor” for an attribute that didn’t really exist. He wanted to be able to disguise accessor methods as attributes within class and subclass scope (at least, I think that’s what he wants). Larry seemed to think he was barking up the wrong tree–class attributes are only likely to be accessible using the $.whatever form within their declaring class and not any subclasses. Larry’s “got some driving to do” so expect some more thoughts about this in the next summary.

Strange Interaction Between Pairs and Named Binding

Autrijus noted that, although

for [1..10].pairs -> Pair $x { say $x.value }

works,

for [1..10].pairs ->      $x { say $x.value }

doesn’t, which is somewhat counter-intuitive. The problem is, the second cas treats the pair as a named argument specifier. After discussion, Autrijus suggested that the best thing might be to specify that the Bare code object (which includes pointy and non-pointy blocks) have Any as a default parameter type–essentially turning off the special behavior of pairs when calling named blocks. I’m all for this myself, but Larry has yet to speak.

How Do Subroutines Check Types?

Ingo Blechschmidt had some questions about specifying types in subroutine definitions. Specifically, he wanted to be able to specify that a sub only take instances of a class Foo and its subclasses but not the class Foo (or its subclasses) itself. Thomas Sandlaß thought that what Ingo wanted is the default behavior and you actually have to do some work to get it to behave any other way.

Referring to Package Variables in the Default Namespace

Matthew Hodgson asked for some clarification of how the default package namespace works. Apparently, Pugs and Synopsis 10 are slightly at odds. Larry had some answers. Matthew probably has some more questions.

Crikey! That Went Quickly

Or, for the traditionalists among you:

Acknowledgements, Adverts, Apologies and Alliteration

Hunting the Perfect Archive

I’m still on the lookout for a replacement for Google groups for my message links. I need an archive that’s up to date with the lists, and has URLs that are easy to derive from Message-IDs. Bonus points for good thread handling.

Help Chip

Tell all your friends, this cannot stand.

The Usual Coda

If you find these summaries useful or enjoyable, please consider contributing to the Perl Foundation to help support the development of Perl.

Or, you can check out my website. Maybe now I’m back writing stuff I’ll start updating it. There are also vaguely pretty photos by me.

Tags

Feedback

Something wrong with this article? Help us out by opening an issue or pull request on GitHub